#ifndef MG_EEPROM_APP_H
#define MG_EEPROM_APP_H

#include "ite/itp.h" //for all ith driver (include GPIO) & MACRO
#include <sys/ioctl.h>
#include <unistd.h>
#include "mg_iic.h"
#include "mg_Device.h"
#include "mg_EEPROM_bsp.h"


//数据存储标志字节
#define EEPROM_SAVE_FLAG 					0x11//EEPROM初始化标记
#define EEPROM_INFO_SAVE_FLAG 				0x11//EEPROM初始化标记

#define EEPROM_Version_ADDR					0		//版本信息		(储存地址：0*256,大小256Byte)
#define EEPROM_Sys_Info_ADDR				0x100	//系统基本信息	(储存地址：1*256,大小256Byte)
#define EEPROM_Sys_Config_ADDR				0x300	//系统配置信息	(储存地址：3*256,大小256Byte)
#define EEPROM_Sys_State_ADDR				0x500	//系统状态信息	(储存地址：5*256,大小256Byte)
#define EEPROM_Device_Info_ADDR				0x700	//配置的设备	(储存地址：7*256,大小30*256Byte)
#define EEPROM_Child_Device0_State_ADDR		0x2500	//子设备状态	(储存地址：37*256,大小256Byte)
#define EEPROM_Child_Device0_Config_ADDR	0x2600	//子设备参数	(储存地址：38*256,大小256Byte)
#define EEPROM_Child_Device1_State_ADDR		0x2700	//子设备状态	(储存地址：39*256,大小256Byte)
#define EEPROM_Child_Device1_Config_ADDR	0x2800	//子设备参数	(储存地址：40*256,大小256Byte)
#define EEPROM_Child_Device2_State_ADDR		0x2900	//子设备状态	(储存地址：41*256,大小256Byte)
#define EEPROM_Child_Device2_Config_ADDR	0x2A00	//子设备参数	(储存地址：42*256,大小256Byte)
#define EEPROM_UserPhoto1Info_ADDR			0x9600	//用户照片信息	(储存地址：150*256,大小64Byte)
#define EEPROM_UserPhoto2Info_ADDR			0x9640	//用户照片信息	(储存地址：150*256,大小64Byte)
#define EEPROM_UserPhoto3Info_ADDR			0x9680	//用户照片信息	(储存地址：150*256,大小64Byte)
#define EEPROM_UserPhoto1_ADDR				0x9700	//用户照片1		(储存地址：151*256,大小30KByte)
#define EEPROM_UserPhoto2_ADDR				0x10F00	//用户照片2		(储存地址：271*256,大小30KByte)
#define EEPROM_UserPhoto3_ADDR				0x18700	//用户照片3		(储存地址：391*256,大小30KByte)
//#define EEPROM_Res_Addr					0x1FF00	//预留256Byte

//基本信息存储结构
typedef struct __STRUCT_INFO_SAVE__
{
	uint8_t 				Save_Flag;			//储存标记
	uint8_t					Save_Data_Len;		//储存数据长度
	uint8_t     			*Save_Data;			//储存数据
}STRUCT_INFO_SAVE;

//系统基本信息读取
void Read_System_Info(void);
//系统配置信息读取
void Read_System_Config(void);
//设备数据读取
void Read_Device_Config(void);
//设备数据读取
void Read_Device_NowData(void);
//测试用的设备参数
void Set_Debug_Dev_Config(void);
//测试用的属性参数
void Set_Debug_Sys_Config(void);
//数据有效性检测
void CheckDatasValid(void);
//储存进程，只能在这里调用储存接口
void EepromSaveProgress(void);
//储存照片数据
void WritePhotoData(uint8_t Photo_Num);
//读取照片数据
void ReadPhotoData(uint8_t Photo_Num);
#endif